package com.wn.date20190821;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import com.wn.date20190820.GetLanIP;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
/**
 * 发现局域网好友
 */
import javafx.stage.Stage;

public class FriendsFound extends Stage
{
	ListView<Label> listView = new ListView<Label>();
	// iplist
	List<String> ipList = new ArrayList<String>();
//	// map
//	Map<String, String> map = new HashMap<String, String>();
//	List<Label> labels = new ArrayList<Label>();
	
	ObservableList<Label> items= FXCollections.observableArrayList(new ArrayList<Label>());

	// 控制主页的设置
	private FxApp main;

	public FriendsFound(FxApp main)
	{
		this.main = main;
		// 初始化
		init();
	}
	/**
	 * 初始化
	 */
	private void init()
	{
		this.setTitle("好友");
		// 过滤192开头的
		try
		{
			// 本地 ip 前三位
			String subip=GetLanIP.getLocalIP().substring(0, 3);
			ipList = GetLanIP.getIPs().stream().filter(t -> t.startsWith(subip)).collect(Collectors.toList());
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		// 建立label 添加到view

		ipList.forEach(t -> {
			updateLabels(t, items);
		});
		// 添加到list
		listView.setItems(items);
		listView.setMinSize(300, 500);

		Group root = new Group();
		root.getChildren().add(listView);
		this.setTitle("好友列表");
		Scene scene = new Scene(root, 300, 500);
		this.setResizable(false);
		this.setAlwaysOnTop(true);
		this.setScene(scene);
		
		getUserName();
	}

	/**
	 * 更新listview
	 * 
	 * @param lbls
	 */
//	public void setListView(List<Label> lbls)
//	{
//		listView.setItems(FXCollections.observableArrayList(lbls));
//	}

	/** 
	 * 更新labels
	 * 
	 * @param t
	 */
	public void updateLabels(String t, List<Label> lbls)
	{
		Label lb = new Label(t);
		// label事件
		lb.setOnMouseClicked(a -> {
			// 设置端口
			main.remoteHosText.setText(lb.getText());
//			main.confirmbtn.setDisable(true);
			if(!main.isSeverStarted) {
				main.initSever();
			}
			main.isSeverStarted=true;
			main.initClient();
		});
		// 添加
		lbls.add(lb);
	}

	/** 
	 * 查找用户名
	 */
	public void getUserName()
	{
		// 获取名字
		ipList.forEach(t -> {
			// 线程查找
			new Thread(() -> {
				String name = GetLanIP.getNameByIp(t);
				if (!name.startsWith("192"))
				{
					updateLabels(name, items);
				}
			}).start();
		});
	}

}
